home *** CD-ROM | disk | FTP | other *** search
/ Revista do CD-ROM 94 / CD-ROM 94.iso / util / weban / setup.msi / Cabs.w19.cab / printreport.xsl < prev    next >
Encoding:
Extensible Markup Language  |  2002-02-28  |  12.5 KB  |  355 lines

  1. <?xml version="1.0"?> 
  2. <xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
  3.  
  4.     <xsl:variable name="ScoreLookup">
  5.       <c score="0" url="Graphics/dash.gif" alttext="Check Not Performed"/>
  6.       <c score="1" url="Graphics/excl_red.gif" alttext="Unable to scan"/>
  7.       <c score="2" url="Graphics/x_red.gif" alttext="Check failed (critical)"/>
  8.       <c score="3" url="Graphics/x_gold.gif" alttext="Check failed (non-critical)"/>
  9.       <c score="4" url="Graphics/astrx.gif" alttext="Best practice"/>
  10.       <c score="5" url="Graphics/chek_grn.gif" alttext="Check passed"/>
  11.       <c score="6" url="Graphics/dash.gif" alttext="Check not performed"/>
  12.       <c score="7" url="Graphics/info.gif" alttext="Additional information"/>
  13.     </xsl:variable>
  14.     
  15.     <xsl:variable name="Assessment">
  16.       <c score="1" text="Unable to Scan" longtext="Could not complete one or more requested checks."/>
  17.       <c score="2" text="Severe Risk" longtext="One or more critical checks failed."/>
  18.       <c score="3" text="Potential Risk" longtext="One or more non-critical checks failed."/>
  19.       <c score="4" text="Security FYIs" longtext=""/>
  20.       <c score="5" text="Strong Security" longtext="All checks were passed."/>
  21.     </xsl:variable>
  22.  
  23.     <xsl:variable name="FileName" select="'file name here'"></xsl:variable>
  24.     
  25.         <xsl:template match="SecScan">
  26.             <xsl:param name="assess" select="@Grade"/>    
  27.             <table>
  28.             <tr>
  29.                 <td class="reportsubheader" width="140">Computer name:</td>
  30.                 <td><xsl:value-of select="@Domain"/>\<xsl:value-of select="@Machine"/></td>
  31.             </tr>
  32.             <tr>
  33.                 <td class="reportsubheader" width="140">IP address:</td>
  34.                 <td><xsl:value-of select="@IP"/></td>
  35.             </tr>
  36.             <tr>
  37.                 <td class="reportsubheader" width="140">Security report name:</td>
  38.                 <td><xsl:value-of select="$FileName" /></td>
  39.             </tr>
  40.             <tr>
  41.                 <td class="reportsubheader" width="140">Scan date:</td>
  42.                 <td><xsl:value-of select="@Date"/></td>
  43.             </tr>
  44.             <xsl:choose>
  45.             <xsl:when test="@HotfixDataVersion">
  46.                   <tr>
  47.                     <td class="reportsubheader" width="140">Hotfix database version:</td>
  48.                     <td><xsl:value-of select="@HotfixDataVersion"/></td>
  49.                 </tr>
  50.             </xsl:when>
  51.             </xsl:choose>    
  52.             <tr>
  53.                 <td class="reportsubheader" width="140">Security assessment:</td>
  54.                 <td><xsl:value-of select="document('')/*/xsl:variable[@name='Assessment']/c[@score=$assess]/@text"/></td>
  55.             </tr>
  56.             </table>
  57.             
  58.             <xsl:choose>
  59.             <xsl:when test="Check[@Type='1']">
  60.                 <br />
  61.                 <div class="reportheader">Windows Scan Results</div>
  62.                 <xsl:choose>
  63.                 <xsl:when test="Check[@Type='1'][@Cat='1']">
  64.                     <br />
  65.                     <div class="reportsubheader" style="MARGIN-LEFT: 5px;">Vulnerabilities</div>
  66.                     <br />
  67.                     <table width="100%" style="MARGIN-BOTTOM: 20px;" border="0" cellpadding="0" cellspacing="0">
  68.                         <tr class="ReportListHeader">
  69.                             <td width="40" align="center">Score</td>
  70.                             <td width="40" align="left">Issue</td>
  71.                             <td>Result</td>
  72.                         </tr>
  73.                         <xsl:for-each select=".">
  74.                             <xsl:apply-templates select="Check[@Type='1'][@Cat='1']">
  75.                                 <xsl:sort order="sortorder" select="sortfield"/>
  76.                             </xsl:apply-templates>
  77.                         </xsl:for-each>
  78.                     </table>            
  79.                 </xsl:when>
  80.                 </xsl:choose>
  81.                 <xsl:choose>
  82.                 <xsl:when test="Check[@Type='1'][@Cat='2']">
  83.                     <br />
  84.                     <div class="reportsubheader" style="MARGIN-LEFT: 5px;">Additional System Information</div>
  85.                     <br />
  86.                     <table width="100%" style="MARGIN-BOTTOM: 20px" border="0" cellpadding="0" cellspacing="0">
  87.                         <tr class="ReportListHeader">
  88.                             <td width="40" align="center">Score</td>
  89.                             <td width="40" align="left">Issue</td>
  90.                             <td>Result</td>
  91.                         </tr>
  92.                         <xsl:for-each select=".">
  93.                             <xsl:apply-templates select="Check[@Type='1'][@Cat='2']">
  94.                                 <xsl:sort order="sortorder" select="sortfield"/>
  95.                             </xsl:apply-templates>
  96.                         </xsl:for-each>
  97.                     </table>
  98.                 </xsl:when>
  99.                 </xsl:choose>
  100.             </xsl:when>
  101.             </xsl:choose>
  102.  
  103.             <xsl:choose>
  104.             <xsl:when test="Check[@Type='3']">    
  105.                 <br />
  106.                 <div class="reportheader">Internet Information Services (IIS) Scan Results</div>
  107.                 <xsl:choose>
  108.                 <xsl:when test="Check[@Type='3'][@Cat='1']">
  109.                     <br />
  110.                     <div class="reportsubheader" style="MARGIN-LEFT: 5px;">Vulnerabilities</div>
  111.                     <br />
  112.                     <table width="100%" style="MARGIN-BOTTOM: 20px" border="0" cellpadding="0" cellspacing="0">
  113.                         <tr class="ReportListHeader">
  114.                             <td width="40" align="center">Score</td>
  115.                             <td width="40" align="left">Issue</td>
  116.                             <td>Result</td>
  117.                         </tr>
  118.                         <xsl:for-each select=".">
  119.                             <xsl:apply-templates select="Check[@Type='3'][@Cat='1']">
  120.                                 <xsl:sort order="sortorder" select="sortfield"/>
  121.                             </xsl:apply-templates>
  122.                         </xsl:for-each>
  123.                     </table>            
  124.                 </xsl:when>
  125.                 </xsl:choose>
  126.                 <xsl:choose>
  127.                 <xsl:when test="Check[@Type='3'][@Cat='2']">
  128.                     <br />
  129.                     <div class="reportsubheader" style="MARGIN-LEFT: 5px;">Additional System Information</div>
  130.                     <br />
  131.                     <table width="100%" style="MARGIN-BOTTOM: 20px" border="0" cellpadding="0" cellspacing="0">
  132.                         <tr class="ReportListHeader">
  133.                             <td width="40" align="center">Score</td>
  134.                             <td width="40" align="left">Issue</td>
  135.                             <td>Result</td>
  136.                         </tr>
  137.                         <xsl:for-each select=".">
  138.                             <xsl:apply-templates select="Check[@Type='3'][@Cat='2']">
  139.                                 <xsl:sort order="sortorder" select="sortfield"/>
  140.                             </xsl:apply-templates>
  141.                         </xsl:for-each>
  142.                     </table>
  143.                 </xsl:when>
  144.                 </xsl:choose>
  145.                 <xsl:choose>
  146.                 <xsl:when test="Check[@Type='3'][@Cat='4']">
  147.                     <table width="100%" style="MARGIN-BOTTOM: 20px" border="0" cellpadding="0" cellspacing="0">
  148.                         <tr class="ReportListHeader">
  149.                             <td width="40" align="center">Score</td>
  150.                             <td width="40" align="left">Issue</td>
  151.                             <td>Result</td>
  152.                         </tr>
  153.                         <xsl:for-each select=".">
  154.                             <xsl:apply-templates select="Check[@Type='3'][@Cat='4']">
  155.                                 <xsl:sort order="sortorder" select="sortfield"/>
  156.                             </xsl:apply-templates>
  157.                         </xsl:for-each>
  158.                     </table>
  159.                 </xsl:when>
  160.                 </xsl:choose>
  161.             </xsl:when>
  162.             </xsl:choose>
  163.             
  164.             <xsl:choose>
  165.             <xsl:when test="Check[@Type='2']">    
  166.                 <br />
  167.                 <div class="reportheader">SQL Server Scan Results</div>
  168.                 <xsl:choose>
  169.                 <xsl:when test="Check[@Type='2'][@Cat='1']">
  170.                     <br />
  171.                     <div class="reportsubheader" style="MARGIN-LEFT: 5px;">Vulnerabilities</div>
  172.                     <br />
  173.                     <table width="100%" style="MARGIN-BOTTOM: 20px" border="0" cellpadding="0" cellspacing="0">
  174.                         <tr class="ReportListHeader">
  175.                             <td width="40" align="center">Score</td>
  176.                             <td width="40" align="left">Issue</td>
  177.                             <td>Result</td>
  178.                         </tr>
  179.                         <xsl:for-each select=".">
  180.                             <xsl:apply-templates select="Check[@Type='2'][@Cat='1']">
  181.                                 <xsl:sort order="sortorder" select="sortfield"/>
  182.                             </xsl:apply-templates>
  183.                         </xsl:for-each>
  184.                     </table>            
  185.                 </xsl:when>
  186.                 </xsl:choose>
  187.                 <xsl:choose>
  188.                 <xsl:when test="Check[@Type='2'][@Cat='2']">
  189.                     <br />
  190.                     <div class="reportsubheader" style="MARGIN-LEFT: 5px;">Additional System Information</div>
  191.                     <br />
  192.                     <table width="100%" style="MARGIN-BOTTOM: 20px" border="0" cellpadding="0" cellspacing="0">
  193.                         <tr class="ReportListHeader">
  194.                             <td width="40" align="center">Score</td>
  195.                             <td width="40" align="left">Issue</td>
  196.                             <td>Result</td>
  197.                         </tr>
  198.                         <xsl:for-each select=".">
  199.                             <xsl:apply-templates select="Check[@Type='2'][@Cat='2']">
  200.                                 <xsl:sort order="sortorder" select="sortfield"/>
  201.                             </xsl:apply-templates>
  202.                         </xsl:for-each>
  203.                     </table>
  204.                 </xsl:when>
  205.                 </xsl:choose>
  206.                 <xsl:choose>
  207.                 <xsl:when test="Check[@Type='2'][@Cat='4']">
  208.                     <table width="100%" style="MARGIN-BOTTOM: 20px" border="0" cellpadding="0" cellspacing="0">
  209.                         <tr class="ReportListHeader">
  210.                             <td width="40" align="center">Score</td>
  211.                             <td width="40" align="left">Issue</td>
  212.                             <td>Result</td>
  213.                         </tr>
  214.                         <xsl:for-each select=".">
  215.                             <xsl:apply-templates select="Check[@Type='2'][@Cat='4']">
  216.                                 <xsl:sort order="sortorder" select="sortfield"/>
  217.                             </xsl:apply-templates>
  218.                         </xsl:for-each>
  219.                     </table>
  220.                 </xsl:when>
  221.                 </xsl:choose>
  222.             </xsl:when>
  223.             </xsl:choose>
  224.             
  225.             <xsl:choose>
  226.             <xsl:when test="Check[@Type='4']">    
  227.                 <br />
  228.                 <div class="reportheader">Desktop Application Scan Results</div>
  229.                 <xsl:choose>
  230.                 <xsl:when test="Check[@Type='4'][@Cat='1']">
  231.                     <br />
  232.                     <div class="reportsubheader" style="MARGIN-LEFT: 5px;">Vulnerabilities</div>
  233.                     <br />
  234.                     <table width="100%" style="MARGIN-BOTTOM: 20px" border="0" cellpadding="0" cellspacing="0">
  235.                         <tr class="ReportListHeader">
  236.                             <td width="40" align="center">Score</td>
  237.                             <td width="40" align="left">Issue</td>
  238.                             <td>Result</td>
  239.                         </tr>
  240.                         <xsl:for-each select=".">
  241.                             <xsl:apply-templates select="Check[@Type='4'][@Cat='1']">
  242.                                 <xsl:sort order="sortorder" select="sortfield"/>
  243.                             </xsl:apply-templates>
  244.                         </xsl:for-each>
  245.                     </table>            
  246.                 </xsl:when>
  247.                 </xsl:choose>
  248.                 <xsl:choose>
  249.                 <xsl:when test="Check[@Type='4'][@Cat='2']">
  250.                     <br />
  251.                     <div class="reportsubheader" style="MARGIN-LEFT: 5px;">Additional System Information</div>
  252.                     <br />
  253.                     <table width="100%" style="MARGIN-BOTTOM: 20px" border="0" cellpadding="0" cellspacing="0">
  254.                         <tr class="ReportListHeader">
  255.                             <td width="40" align="center">Score</td>
  256.                             <td width="40" align="left">Issue</td>
  257.                             <td>Result</td>
  258.                         </tr>
  259.                         <xsl:for-each select=".">
  260.                             <xsl:apply-templates select="Check[@Type='4'][@Cat='2']">
  261.                                 <xsl:sort order="sortorder" select="sortfield"/>
  262.                             </xsl:apply-templates>
  263.                         </xsl:for-each>
  264.                     </table>
  265.                 </xsl:when>
  266.                 </xsl:choose>
  267.             </xsl:when>
  268.             </xsl:choose>
  269.             
  270.         </xsl:template>
  271.     
  272.     <xsl:template match="Check">
  273.         <xsl:param name="score" select="@Grade"/>
  274.         
  275.             <xsl:variable name="bgcolor">
  276.             <xsl:choose>
  277.                 <xsl:when test="(position() mod 2) = 1">#8caae6</xsl:when>
  278.                 <xsl:otherwise>#CECFF6</xsl:otherwise>
  279.             </xsl:choose>
  280.             </xsl:variable>
  281.             <tr bgcolor="{$bgcolor}">
  282.                 <td align="center" valign="middle">
  283.                     <xsl:choose>
  284.                       <xsl:when test="@Cat='2'">
  285.                         <xsl:choose>
  286.                           <xsl:when test="@ID='121'">
  287.                             <img alt="{document('')/*/xsl:variable[@name='ScoreLookup']/c[@score=7]/@alttext}" src="{document('')/*/xsl:variable[@name='ScoreLookup']/c[@score=7]/@url}" />
  288.                            </xsl:when>
  289.                           <xsl:when test="@ID='101'">
  290.                             <img alt="{document('')/*/xsl:variable[@name='ScoreLookup']/c[@score=7]/@alttext}" src="{document('')/*/xsl:variable[@name='ScoreLookup']/c[@score=7]/@url}" />
  291.                            </xsl:when>
  292.                           <xsl:otherwise>
  293.                             <img alt="{document('')/*/xsl:variable[@name='ScoreLookup']/c[@score=4]/@alttext}" src="{document('')/*/xsl:variable[@name='ScoreLookup']/c[@score=4]/@url}" />
  294.                           </xsl:otherwise>
  295.                         </xsl:choose>
  296.                       </xsl:when>
  297.                       <xsl:otherwise>
  298.                         <img alt="{document('')/*/xsl:variable[@name='ScoreLookup']/c[@score=$score]/@alttext}" src="{document('')/*/xsl:variable[@name='ScoreLookup']/c[@score=$score]/@url}" />    
  299.                       </xsl:otherwise>
  300.                     </xsl:choose>    
  301.                 </td>
  302.                 <td width="75"><xsl:value-of select="@Name"/></td>
  303.                 <td> 
  304.                     <TABLE width="100%">  
  305.                       <TR>
  306.                         <TD align="left" colspan="3"><xsl:value-of select="Advice"/></TD>
  307.                       </TR>
  308.                         <xsl:choose>
  309.                           <xsl:when test="Detail">
  310.                             <TR>
  311.                             <TD>
  312.                             <table width="100%" border="0" cellpadding="0" cellspacing="0" style="padding-left: 10px; padding-right: 10px;">
  313.                                 <tr class="ReportListHeader">
  314.                                     <xsl:for-each select="Detail/Head/Col">
  315.                                         <td Nowrap="true">
  316.                                         <xsl:value-of select="."/>
  317.                                         </td>
  318.                                     </xsl:for-each>
  319.                                 </tr>
  320.                                 <xsl:for-each select="Detail">
  321.                                     <xsl:apply-templates select="Row">
  322.                                     </xsl:apply-templates>
  323.                                 </xsl:for-each>
  324.                             </table>
  325.                             </TD>
  326.                             </TR>
  327.                           </xsl:when>
  328.                         </xsl:choose>    
  329.                     </TABLE>
  330.                     <br/>
  331.                 </td>
  332.             </tr>
  333.     </xsl:template>
  334.     
  335.     <xsl:template match="Row">
  336.         <xsl:param name="score" select="@Grade"/>
  337.             <tr>
  338.                 <xsl:for-each select="Col">
  339.                 <td valign="top">
  340.                  <xsl:choose>
  341.                   <xsl:when test="@URL">
  342.                     <A href="{@URL}"><xsl:value-of select="."/></A>
  343.                   </xsl:when>
  344.                   <xsl:otherwise>
  345.                     <xsl:value-of select="."/>
  346.                   </xsl:otherwise>
  347.                 </xsl:choose>    
  348.                 </td>
  349.                 </xsl:for-each>
  350.             </tr>
  351.     </xsl:template>
  352.     
  353.  
  354.     
  355. </xsl:stylesheet>